\par Não é incomum na computação -- e em suas áreas derivadas --, encontrar 
profissionais que já não tenham passado por momentos angustiantes para tentar 
encontrar uma forma eficaz de detectar padrões em um arquivo de texto.

\par Apesar de existir um recurso muito poderoso para tal função, poucos 
profissionais o dominam, ou sequer o conhecem. São as expressões regulares, que 
nada mais são do que uma forma de se específicar padrões a serem localizados 
dentro de um texto\cite{regular}.

\par As expressões regulares são suportadas pela maioria das linguagens de 
programação, e até mesmo por alguns editores de texto e planilhas eletrônicas, 
mas segundo \citeonline{regular} quem quiser se aventurar 
neste mundo, precisará em primeiro lugar de coragem pois não existe padronização. 
Cada software ou linguagem de programação implementou o recurso da forma que 
achou ``mais interessante'', portanto, não espere que uma expressão criada 
em \textit{Python} funcione no \textit{Perl} por exemplo.

\par Não entraremos em detalhes no assunto, mas a seguir colocamos um exemplo 
de expressão regular:

\begin{verbatim}
    re.split('://', "http://omeusite.com")
\end{verbatim}

\par Após a \textit{string} ser processado pelo interpretador de expressões 
regulares o resultado seria o seguinte:
\begin{verbatim}
    ["http", "www.omeusite.com"]
\end{verbatim}
\par O comando \textit{re.split} separa tudo que coincidir com a expressão 
regular ``://'' e retorna um array com o resultado.

\par Tanto a linguagem de programação \textit{Python} quanto o 
\textit{Postgresql} suportam expressões regulares, porém em nosso trabalho só 
vamos usar o recurso da linguagem \textit{Python}, para detectar cada campo do 
\textit{access.log}.

